﻿//==============================================================================
// File: ModulesInfoPresentationModel.cs
// Created: 2010-05-28
// Author: Piotr Włodek, Arkadiusz Świerczek
//==============================================================================
// This file is a part of MAMMOTH project.
// Copyright (C) 2010 AGH University of Science and Technology, Krakow.
// https://caribou.iisg.agh.edu.pl/trac/mammoth
//
// Mammoth is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// Mammoth is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License
// along with Mammoth. If not, see http://www.gnu.org/licenses/.
//==============================================================================

using WpfRcp.Core.Views.Presenters;

namespace WpfRcp.Views.Presenters
{
    public class ModulesInfoPresentationModel : PresenterBase<IModulesInfoView>
    {
        private IAboutView AboutView { get; set; }
        private double OriginalAboutViewTop { get; set; }
        public bool IsShown { get; private set; }

        public ModulesInfoPresentationModel(IModulesInfoView view)
        {
            View = view;
            View.PresentationModel = this;
        }

        public void Show(IAboutView aboutView)
        {
            if (IsShown)
                return;

            AboutView = aboutView;
            View.ViewOwner = aboutView;
            View.Show();

            OriginalAboutViewTop = AboutView.Top;
            double middleTop = AboutView.Top + AboutView.ActualHeight / 2;
            double totalHeight = AboutView.ActualHeight + View.ActualHeight;

            AboutView.Top = middleTop - totalHeight/2;
            View.Top = AboutView.Top + AboutView.ActualHeight + 10;

            IsShown = true;
        }

        public void Close()
        {
            View.Close();
            AboutView.Top = OriginalAboutViewTop;
            IsShown = false;
        }
    }
}